#pragma once
#include <mutex>
#include <unordered_map>
#include <deque>
#include "publicstruct.h"
using namespace std;

// 点赞评论同步TimeLine 单例模式 线程安全
class DZPLSyncTimeLine
{
private:
    // 构造函数私有化,保证不在类的外部实例化
    DZPLSyncTimeLine();

public:
    ~DZPLSyncTimeLine();
    // 获取实例
    static DZPLSyncTimeLine *getInstance()
    {
        return globalInstance;
    }
    // 获取同步会话Map   返回引用,不然返回的只是sync_map的副本,对其进行的 添加删除操作都将不会影响到它本身
    inline unordered_map<int, deque<struct st_dzpl>> &getSyncMap() { return sync_dzplmap; }
    // 添加dzpl到用户的dzpl同步TimeLine(收件箱)
    void addDZPLToSyncTimeLine(int uid, struct st_dzpl dzpl);

private:
    static DZPLSyncTimeLine *globalInstance; // 全局唯一实例
    mutex m_mutex;                    // 互斥量
    unordered_map<int, deque<struct st_dzpl>> sync_dzplmap;
};